﻿using Estsh.Core.Base;
using Estsh.Core.Services;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Model.Extend.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Estsh.Core.Model.Extend;
using Estsh.Core.Model.Extend.Models;

namespace Estsh.Core.Wms.IServices
{
    public interface IMoveService : IBaseService<BaseEntity>
    {

        public string CheckMove(string loginId,string cartonNo,string locateName,string isPack);

        public SetObjectDetail CheckBarcode(string loginId, string cartonNo, string locateName, string isHandover,string rackNo);

        public SetObjectDetail CheckContainer(string loginId, string rackNo, string isHandover);

        public string CheckLocateName(string loginId, string LocateName, string isPack);


        public List<SysStock> GetMovePartInfo(string cartonNo, string isPack);
        public List<WmsRackPackage_Extend> GetCheckCartNoInfo(string rackNo);

        public List<WmsMoveHeader> GetMoveOrderList(string cartonno);

        public List<WmsMoveDetail> GetMoveOrderDetailList(string orderNo);

        public List<WmsRackPackage_Extend> GetRackPartNo(string orderNo);

        public string CheckMoveOrderLocateName(string loginId, string LocateName, string orderNo);

        public string CheckCartonMoveOrder(string loginId, string cartonNo, string locateName, string orderNo);

        public string ChangeMoveHeaderStatus(string loginId, string orderNo);

        public SetObjectDetail CheckCartonOrRack(string cartonNo, string orderNo, string isSplit, string loginId);

        public SetObjectDetail CheckRackNo(string loginId, string rackNo, string isSplit,string orderNo);

        public SetObjectDetail CheckCartNo(string loginId,  string isSplit,string cartNo,string orderNo,string rackNo);

        public SetObjectDetail CheckSplitQty(string loginId, string isSplit, string cartNo, string orderNo, string rackNo, string SplitQty,string rackOrCartNo);

        public SetObjectDetail GetMoveSourceOrderList(string orderNo);

        public SetObjectDetail GetMoveSourceListByOrderNo(string orderNo);

        public string CheckRackMoveOrder(string cartonNo, string orderNo, string locateName, string loginId);


        public string SubmitMoveOrderGoERP(string orderNo);

        public SetObjectDetail GetRackPackageList(string cartNo, string isSplit);

        public SetObjectDetail ScanSplitQty(string loginId, string rackNo, string rackOrCartNo, string SplitQty, string cartonNo);

        public SetObjectDetail CheckTorr(string loginId, string rackNo);

        public SetObjectDetail CheckLotGroupBarcode(string rackNo,string cartonNo,string isGroup,string loginId);

        public SetObjectDetail CheckLotGroupSplitQty(string rackNo, string cartonNo, string rackOrcartNo, string isGroup, string SplitQty, string loginId);

        public SetObjectDetail GetShowList(string loginId, string rackNo);

        public List<WmsMoveHeader> GetReturnMaterialInfo(string onLine);

        public SetObjectDetail CheckReturnMaterialBarcode(string rackOrcartNo, string loginId);

        public SetObjectDetail CheckReturnMaterialSplitQty(string orderNo, string rackOrcartNo, string cartonNo, string SplitQty, string loginId);

        public SetObjectDetail CheckReturnMaterialLocate(string locateName, string orderNo, string rackOrcartNo, string cartonNo, string SplitQty,string locate , string loginId);

        public SetObjectDetail CheckStockRackNo(string locateName, string rackNo, string isOut, string loginId);
    }
}
